home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
JCSM Shareware Collection 1993 November
/
JCSM Shareware Collection - 1993-11.iso
/
cl720
/
clibc33j.lzh
/
CRC.C
< prev
next >
Wrap
Text File
|
1992-08-01
|
759b
|
38 lines
#include <stdio.h>
#define POLY 0x1021
unsigned short CRCtable[256];
/* initialize CRC table */
void InitCRC()
{int i;
unsigned short CalcTable();
for(i=0;i<256;i++) CRCtable[i] = CalcTable(i,POLY,0);
}
/* calculate CRC table entry */
unsigned short CalcTable(data,genpoly,accum)
unsigned short data;
unsigned short genpoly;
unsigned short accum;
{static int i;
data <<= 8;
for(i=8;i>0;i--)
{
if((data^accum) & 0x8000) accum = (accum << 1) ^ genpoly;
else accum <<= 1;
data <<= 1;
}
return(accum);
}
/* compute updated CRC */
unsigned short UpdateCRC(crc,byte)
unsigned short crc;
unsigned char byte;
{
return( (crc << 8) ^ CRCtable[ (crc >> 8) ^ byte ] );
}